package com.crois.barrier.common.dto;

import lombok.Data;

import java.io.Serializable;
import java.net.URI;
import java.util.Date;
import java.util.List;

/**
 * @author Hou Ze Yu
 * @description 路由信息
 * @date 2020/7/9
 */
@Data
public class ApiRouteInfo implements Serializable {

   private static final long serialVersionUID = 2405172041950251807L;

    private Integer id;
    /**
     * api 组 ID
     */
    private Integer apiRouteGroupId;
    /**
     * 路由名称
     */
     private String apiRouteName;
      /**
       * 描述
       */
      private String description;
     /***
     * 请求路径
      */
     private String requestPath;
      /**
       * 跨域请求
       */
     private Boolean enableCors;
     /***
      * 后端路径
      */
     private String servicePath;
    /***
     * 匹配类型 1 精准匹配 2 模糊匹配
     */
    private Integer matchType;
    /***
     * 服务转发策略
     */
    private String upstreamStrategy;
    /***
     * 如果是listofserver策略则需要
     */
    private String serviceName;
    /****
     * 指定的ips
     */
    private List<IpAndWeight> ipList;
    /***
     * 前缀路由是否生效
     */
    private Boolean isPrefix;
    /***
     * url地址
     */
    private String url;
     /***
     * 路由状态  1 发布 0 未发布
     */
    private Integer enabled;
    /**
     * 请求方法 GET POST  PUT DELETE OPTION
     */
    private String requestMethod;
    /**
     * 后端方法  GET POST  PUT DELETE OPTION
     */
    private String backendMethod;

    /**
     * 协议  http / https
     */
    private String protocol;
    /**
     * 入参请求模式 1 入参映射（过滤未知参数） 2 入参映射（透传未知参数） 3  入参透传
     */
    private Integer enterParameterModel;
    /**
     * body数据类型 1 其他（json/文件等） 2 （Form）
     */
    private Integer bodyDataType;
    /**
     * APi参数
     */
    private List<ApiParameterInfo> apiParameter;
    /**
     * APi常量参数
     */
    private List<ApiParameterInfo> constantsParameter;
     /**
     * contentType 类型 1 透传客户端contentType头 2 自定义contentType 内容 3 网关默认
     */
    private Integer contentType;
    /**
     * contentType 内容
      */
    private String contentTypeText = "application/octet-stream; charset=UTF-8";
    /**
     * body参数
     */
    private String bodyDescription;
    /**
     * 返回值
     */
    private ApiResponseInfo apiResponse;

    /***
     * 权重
     */
    private Integer weight = 1;

    /**
     * 超时时间
     */
    private Long timeout;
    /**
     * 重试次数
     */
    private Long retry;
    /**
     * 插件
     */
    private List<String> plugins;
//    /**
//     * 是否开启缓存
//     */
//    private Boolean isCache = false;
//    /**
//     * 是否开启记录日志
//     */
//    private Boolean isLog = false;
//    /**
//     * 是否开启监控
//     */
//    private Boolean isMonitor= false;
//    /**
//     * 是否开启统计
//     */
//    private Boolean isStatistics= false;
//    /**
//     * 是否开启重试
//     */
//    private Boolean isRetry= false;
//     /**
//     * 是否开启限流
//     */
//    private Boolean isRateLimit= false;
//     /**
//     * 是否开启流量拷贝
//     */
//    private Boolean isTrafficCopy= false;
    /**
     *是否发布预发环境
     */
     private  Boolean envBetaPublish=false;
     /**
     *是否发布生产环境
     */
    private  Boolean envProdPublish=false;
    /**
     *是否发布测试环境
     */
    private  Boolean envTestPublish=false;
}
